package com.amigo.online.provider.manager.util;

import java.io.IOException;

import org.springframework.stereotype.Component;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;

@Component
public class QiniuUtilTest {
    //设置好账号的ACCESS_KEY和SECRET_KEY
    private static String ACCESS_KEY = "ORzlO4zf6aavC0cXasHCqMunBomgJEUl8wDvAmKq";
    private static String SECRET_KEY = "GkuPNELiBtZJio1psjQ7iANAZmN5kWa8EdkuiAQe";
    private static String BUCKET_NAME = "amigo-online-video"; //对应要上传到七牛上 你的那个路径（自己建文件夹 注意设置私有）
    private static String VIDEO_ADDRESS = "http://pavjyqqgv.bkt.gdipper.com/";

//	  @Value("${access_key}")
//	  public void setACCESS_KEY(String aCCESS_KEY) {
//		  ACCESS_KEY = aCCESS_KEY;
//	  }
//	  @Value("${secret_key}")
//	  public void setSECRET_KEY(String sECRET_KEY) {
//		  SECRET_KEY = sECRET_KEY;
//	  }
//	  @Value("${bucketname}")
//	  public void setBUCKET_NAME(String bUCKET_NAME) {
//		   BUCKET_NAME = bUCKET_NAME;
//	  }

    //创建上传对象
    UploadManager uploadManager = new UploadManager(new Configuration());

    /**
     * 简单上传，使用默认策略，只需要设置上传的空间名就可以了
     *
     * @param fileName 文件上传至七牛云空间的名称
     * @return
     */
    public String getUpToken(String fileName) {
        //密钥配置
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        //<bucket>:<key>，表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”，已存在同名资源则会被本次覆盖。
        //如果希望只能上传指定key的文件，并且不允许修改，那么可以将下面的 insertOnly 属性值设为 1。
        //第三个参数是token的过期时间
        return auth.uploadToken(BUCKET_NAME, fileName, 3600, new StringMap().put("insertOnly", 0));
    }

    /**
     * 普通上传
     *
     * @param filePath 文件路径
     * @param fileName 文件上传至七牛云空间的名称
     * @throws IOException
     */
    public Response upload(String filePath, String filename) {
        try {
            //调用put方法上传
            Response res = uploadManager.put(filePath, filename, getUpToken(filename));
            return res;
        } catch (QiniuException e) {
            Response r = e.response;
            e.printStackTrace();
            return r;
        }
    }


    public static void main(String[] args) {
        System.out.println(VIDEO_ADDRESS);
        //new QiniuUtil().upload("D:\\image\\lwl.mp4","lwltest.mp4");
    }
}
